package com.avicit.zipkinkafkaesserver.factory;

import com.avicit.zipkinkafkaesserver.utils.TimeUtils;

import java.util.concurrent.atomic.AtomicInteger;

/**
 * batchNumber 创建
 * 日期更新后 ，自动归为0
 * 分布式部署下这个类有问题，需要使用全局的自增方案，如使用redis 。
 */
public class BatchNumberFactory {
    private static final AtomicInteger  atomicInteger = new AtomicInteger(0);
    public  Integer batchNumber() {
        String nowTime = TimeUtils.nowTime();
            if ("00:00:00".equals(nowTime)) {
                atomicInteger.set(0);//到 00:00:00 时 初始值设置为0,从新计数
            }
        return atomicInteger.addAndGet(1);
    }

    public  Integer batchNumber(int initValue) {
        String nowTime = TimeUtils.nowTime();
            if ("00:00:00".equals(nowTime)) {
                atomicInteger.set(0);//到 00:00:00 时 初始值设置为0,从新计数
            }
            if (initValue!=0) {//如果服务挂掉，这时的批次号应该是es 里面最大的为初始值
                atomicInteger.set(initValue);
            }
        return atomicInteger.addAndGet(1);
    }



//    public  Integer batchNumber(String now) {
//        String nowTime = TimeUtils.nowTime();
//            if ("00:00:00".equals(now)) {
//                atomicInteger.set(0);//到 00:00:00 时 初始值设置为1
//            }
//        return atomicInteger.addAndGet(1);
//    }
//
//    public static void main(String[] args) {
//        BatchNumberFactory batchNumberFactory = new BatchNumberFactory();
//
//        for (int i = 0;i<10;i++) {
//            String now;
//            if (i==0) {
//                now = "00:00:00";
//            } else {
//                now = "00:00:01";
//            }
//            Integer integer = batchNumberFactory.batchNumber(now);
//            System.out.println(integer);
//        }
//    }


}
